﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ActionTrackerDAO.Base;
using ActionTrackerEntities;

namespace ActionTrackerDAO
{
    public class ReunionDAO : DAOBase<Reunion,int>
    { 
        public List<Reunion> GetByFiltro(int? pIdProyecto)
        {
            var oQuery = Session.QueryOver<Reunion>();
            Session.Clear();
            if (pIdProyecto.HasValue)
            {
                oQuery.Where(x => x.Proyecto.IdProyecto == pIdProyecto);
            }
            
            return (List<Reunion>) oQuery.OrderBy(x => x.Descripcion).Asc.List();
        }

        public bool ExisteReunionConNombre(string pDescripcion, int pIdProyecto, int? pIdReunionEnEdicion)
        {
            if (pIdReunionEnEdicion.HasValue)
            {
                //busco el Reunion en la BD
                var oReunionEnEdicion = Session.QueryOver<Reunion>()
                .Where(x => x.IdReunion == pIdReunionEnEdicion)
                .List().FirstOrDefault();

                //si el nombre que está en BD es igual al parámetro, no cambié el nombre de Reunion
                if (oReunionEnEdicion.Descripcion == pDescripcion)
                {
                    return false;
                }
            }
            Session.Clear();
            var oQuery = Session.QueryOver<Reunion>()
            .Where(x => x.Descripcion == pDescripcion)
            .And(x => x.Proyecto.IdProyecto == pIdProyecto)
            .List();
            if (oQuery.Count > 0)
            {
                return true;
            }
            return false;
        }
    }
}
